English
GNUplot Demonstration
Содержание Назад Вперед
Использование gnuplot для интегрирования функций#
# $Id: bivariat.dem%v 3.38.2.56 1993/01/22 02:44:12 woo Exp woo $
#
# Эта демо версия медленна и требует большого размера стека.
# Не пытайтесь запустить ее под MSDOS.
#
# функция integral_f(x) близка к интегралу f(x) от 0 до x.
# integral2_f(x,y) близка и интегралу от x до y.
# определим f(x) как функция одной переменной
#
# интеграл считается как сумма f(x_n)*delta
# x/delta от x до 0)
#
f(x) = exp(-x**2)
delta = 0.2
# можно взять delta=0.025 для машин не с MSDOS
#
# integral_f(x) использует одну переменную, верхний предел. 0 нижний предел.
# вычисляется интеграл f(t) от 0 до x
integral_f(x) = (x>0)?integral1a(x):-integral1b(x)
integral1a(x) = (x<=0)?0:(integral1a(x-delta)+delta*f(x))
integral1b(x) = (x>=0)?0:(integral1b(x+delta)+delta*f(x))
#
# integral2_f(x,y) двух переменных; x нижний предел, y верхний.
# вычисляется интеграл f(t) от x до y
integral2_f(x,y) = (xy)?0:(integral2(x+delta,y)+delta*f(x))
set autoscale
set title "approximate the integral of functions"
set samples 50
plot [-5:5] f(x) title "f(x)=exp(-x**2)",
2/sqrt(pi)*integral_f(x) title "erf(x)=2/sqrt(pi)*integral_f(x)"
изображение
f(x)=sin(x)
plot [-5:5] f(x) title "f(x)=sin(x)", integral_f(x)
изображение
set title "approximate the integral of functions (upper and lower limits)"
f(x)=(x-2)**2-20
plot [-10:10] f(x) title "f(x)=(x-2)**2-20", integral2_f(-5,x)
изображение
f(x)=sin(x-1)-.75*sin(2*x-1)+(x**2)/8-5
plot [-10:10] f(x) title "f(x)=sin(x-1)-0.75*sin(2*x-1)+(x**2)/8-5", integral2_f(x,1)
изображение
#
# This definition computes the ackermann. Не пытайтесь вычислять его
# для не интегральных значений. Так же, не следует брать значения
# больше m = 3, чтобы долго не ждать.
ack(m,n) = (m == 0) ? n + 1 : (n == 0) ? ack(m-1,1) : ack(m-1,ack(m,n-1))
set xrange [0:3]
set yrange [0:3]
set isosamples 4
set samples 4
set title "Plot of the ackermann function"
splot ack(x, y)
изображение
set xrange [-5:5]
set yrange [-10:10]
set isosamples 10
set samples 100
set key 4,-3
set title "Min(x,y) and Max(x,y)"
#
min(x,y) = (x < y) ? x : y
max(x,y) = (x > y) ? x : y
plot sin(x), x**2, x**3, max(sin(x), min(x**2, x**3))+0.5
изображение
#
# gcd(x,y) находит НОД x и y,
# используя алгоритм Евклида
# поскольку это возможно только для целых чисел, то сначала числа округляются
gcd(x,y) = gcd1(rnd(max(x,y)),rnd(min(x,y)))
gcd1(x,y) = (y == 0) ? x : gcd1(y, x - x/y * y)
rnd(x) = int(x+0.5)
set samples 59
set xrange [1:59]
set auto
set key
set title "Greatest Common Divisor (for integers only)"
plot gcd(x, 60)
изображение
set xrange [-10:10]
set yrange [-10:10]
set auto
set isosamples 10
set samples 100
set title ""
http://playfair.stanford.edu/~woo/woo.html
|